home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / dev / c / qtools0.2-src.lha / src / libqdisplay / 3d.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-07-19  |  2.1 KB  |  81 lines

  1. #ifndef D3_H
  2. #define    D3_H
  3.  
  4. /*
  5.  * ============================================================================
  6.  * structures
  7.  * ============================================================================
  8.  */
  9.  
  10. #define CC_OFF_LEFT    1
  11. #define CC_OFF_RIGHT   2
  12. #define CC_OFF_TOP     4
  13. #define CC_OFF_BOT     8
  14. #define CC_BEHIND      16
  15. #define WALL_TYPE    (~CONTENTS_SOLID)            /* -2 */
  16. #define WATER_TYPE    (~CONTENTS_WATER)            /* -3 */
  17. #define SLIME_TYPE    (~CONTENTS_SLIME)            /* -4 */
  18. #define LAVA_TYPE    (~CONTENTS_LAVA)            /* -5 */
  19. #define SKY_TYPE    (~CONTENTS_SKY)                /* -6 */
  20. #define TELEPORT_TYPE    (~(-7))
  21. #define OTHER_TYPE    (~(-8))
  22. #define ANIM_TYPE    (~(-9))
  23.  
  24. /*#define       FIX_INT(x)      (((x) + 32768) >> 16) */
  25. /*#define       FLOAT_TO_INT(x) ((int)((x) + 0.5)) */
  26. /*#define       FLOAT_TO_FIX(x) (FLOAT_TO_INT(scalw((x), 16))) */
  27. #define    FIX_INT(x)    (((x) + 65535) >> 16)
  28. #define    FLOAT_TO_INT(x)    ((int)(x))
  29. #define    FLOAT_TO_FIX(x)    ((int)((x) * 65536))
  30.  
  31. typedef int fix;
  32.  
  33. typedef struct {
  34.   int tx, ty, tz;
  35. } angvec;
  36.  
  37. typedef struct {
  38.   vec3_t p;
  39.   unsigned char ccodes;
  40.   unsigned char pad0, pad1, pad2;
  41.   fix sx, sy;
  42.   float u, v;
  43. } point_3d;
  44.  
  45. struct extplane {
  46.   float normal[3];
  47.   bool positive[3];
  48.   float dist;
  49. };
  50.  
  51. /*
  52.  * ============================================================================
  53.  * globals
  54.  * ============================================================================
  55.  */
  56.  
  57. extern float clipScaleX, clipScaleY, incSpeed, maxSpeed, decSpeed;
  58. extern vec3_t cameraLocation, currentSpeed, old_cam_loc;
  59. extern bool changedLocation, changedAngles;
  60. extern angvec cameraAngles;
  61. extern struct extplane planes[4];
  62. extern float xCenter, yCenter;
  63.  
  64. /*
  65.  * ============================================================================
  66.  * prototypes
  67.  * ============================================================================
  68.  */
  69.  
  70. void compute_view_frustrum(void);
  71. float dist2_from_viewer(vec_t *in);
  72. void init_tables(void);
  73. void set_clip_values(int width, int height);
  74. void set_view_info(void);
  75. void transform_point(point_3d *p, vec_t *v);
  76. void transform_point_raw(vec_t *out, vec_t *in);
  77. void transform_rotated_point(point_3d * p);
  78. void transform_vector(vec_t *out, vec_t *in);
  79.  
  80. #endif
  81.